package com.cty.A_OutOfMemoryError.C_RuntimeConstantPoolOOM;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther: cty
 * @Date: 2020/6/26 22:04
 * @Description: 运行时常量池溢出——OutOfMemoryError
 * @VM Args: -XX:PermSize=2M -XX:MaxPermSize=2M
 * @version: 1.0
 */
public class RuntimeConstantPoolOOM {
    public static void main(String[] args) {
        // 使用List保持着常量池的引用，避免Full GC回收常量池行为
        List<String> list = new ArrayList<>();
        // 10M的PermSize在integer范围内足够产生OOM了
        int i = 0;
        while(true){
            list.add(String.valueOf(i++).intern());
            System.out.println(i);
        }

    }  // end main()
}  // end main()

/** 未出现相应结果
 * OutOfMemoryError: PermGen space
 */
